﻿using ERP.EquipmentManage.Dtos;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

namespace ERP.EquipmentManage
{
    /// <summary>
    /// 设备点检保养项目服务接口
    /// </summary>
    public interface IDvsubjectService : IApplicationService
    {
        /// <summary>
        /// 获取分页列表
        /// </summary>
        /// <param name="input">查询条件</param>
        /// <returns>分页结果</returns>
        Task<PagedResultDto<DvsubjectDto>> GetPagedListAsync(GetDvsubjectInputDto input);

        /// <summary>
        /// 根据ID获取
        /// </summary>
        /// <param name="id">ID</param>
        /// <returns>项目详情</returns>
        Task<DvsubjectDto> GetByIdAsync(int id);

        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="input">创建信息</param>
        /// <returns>创建后的信息</returns>
        Task<DvsubjectDto> CreateAsync(CreateDvsubjectDto input);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="id">ID</param>
        /// <param name="input">更新信息</param>
        /// <returns>更新后的信息</returns>
        Task<DvsubjectDto> UpdateAsync(int id, UpdateDvsubjectDto input);

        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="id">ID</param>
        /// <returns>操作结果</returns>
        Task DeleteAsync(int id);

        /// <summary>
        /// 批量删除
        /// </summary>
        /// <param name="ids">ID列表</param>
        /// <returns>操作结果</returns>
        Task BatchDeleteAsync(List<int> ids);

        /// <summary>
        /// 获取项目类型列表
        /// </summary>
        /// <returns>类型列表</returns>
        Task<List<string>> GetSubtypeListAsync();

        /// <summary>
        /// 导出选定的数据
        /// </summary>
        /// <param name="ids">选定的ID列表</param>
        /// <returns>选定的数据列表</returns>
        Task<List<DvsubjectDto>> ExportSelectedAsync(List<int> ids);
    }
}
